package com.itheima.mm.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.mm.context.BaseContext;
import com.itheima.mm.dto.TagDTO;
import com.itheima.mm.entity.PageResult;
import com.itheima.mm.entity.QueryPageBean;
import com.itheima.mm.entity.TagPageQueryParams;
import com.itheima.mm.mapper.TagMapper;
import com.itheima.mm.pojo.Tag;
import com.itheima.mm.service.TagService;
import com.itheima.mm.utils.DateUtils;
import com.itheima.mm.vo.TagVO;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * @Description TagServiceImpl
 * @Author chunbo
 * @Date 2024-06-28
 */
@Service
public class TagServiceImpl implements TagService {


    @Resource
    private TagMapper tagMapper;

    /**
     * 学科标签添加方法
     *
     * @param tagDTO
     */
    @Override
    public void add(TagDTO tagDTO) {
        Tag tag = new Tag();
        BeanUtils.copyProperties(tagDTO, tag);
        tag.setCreateDate(DateUtils.parseDate2String(new Date()));//系统当前时间
        tag.setStatus(0);//启用
        tag.setUserId(BaseContext.getCurrentId());
        tagMapper.addTag(tag);
    }

    /**
     * 学科标签分页查询
     *
     * @param queryPageBean
     * @return
     */
    @Override
    public PageResult findListByPage(QueryPageBean<TagPageQueryParams> queryPageBean) {
        PageHelper.startPage(queryPageBean.getCurrentPage(),
                queryPageBean.getPageSize());

        //调用mapper查询数据
        List<TagVO> tagVOList = tagMapper.findByCondition(queryPageBean.getQueryParams());
        Page<TagVO> page = (Page<TagVO>) tagVOList;

        //返回数据
        return new PageResult(page.getTotal(), page.getResult());


    }
    /**
     * 删除标签
     *
     * @param id
     */


    @Override
    public void deleteTag(Integer id) {
        tagMapper.deleteTag(id);

    }
    //更新学科标签方法
    @Override
    public void update(TagDTO tagDTO) {
        Tag tag = new Tag();
        BeanUtils.copyProperties(tagDTO,tag);
        //tag.setCreateDate(DateUtils.parseDate2String(new Date()));

        tagMapper.update(tag);

    }
    //学科目录禁用
    public boolean disableTag(Integer id) {
        // 假设 status = 1 表示禁用，0 表示启用
        int result = tagMapper.updateTagStatus(id, 1);
        return result > 0;
    }

    //学科目录启用
    public boolean enableCatalog(Integer id) {
        // 假设 status = 0 表示启用，1 表示禁用
        int result = tagMapper.updateTagStatus(id, 0);
        return result > 0;
    }

}